// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); 1win — официальный сайт букмекерской конторы 1вин – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

1win — официальный сайт букмекерской конторы 1вин

В мире ставок и азарта 1вин является одним из самых популярных и надежных букмекеров. Компания была основана в 2018 году и с тех пор стала одним из лидеров на рынке азарта. 1вин предлагает своим клиентам широкий спектр услуг, включая ставки на спорт, киберспорт, политические события и многое другое.

Официальный сайт 1вин – это место, где вы можете найти все, что вам нужно для успешной ставки. Здесь вы можете выбрать из тысячи вариантов ставок, узнать о последних новостях и событиях, а также получать доступ к различным функциям и инструментам для анализа и прогнозирования результатов.

1вин – это не только букмекер, это также и платформа для игроков, которые ищут новые возможности и способы заработка. Компания предлагает своим клиентам широкий спектр бонусов и акций, чтобы помочь им начать свою карьеру в мире азарта.

1win – это выбор для тех, кто ищет надежного партнера для своих ставок. Компания обеспечивает безопасность и конфиденциальность своих клиентов, обеспечивая им комфортную и безопасную игру.

1вин – это не только букмекер, это также и сообщество, которое объединяет людей, которые ищут новых приключений и возможности. Здесь вы можете найти друзей, с которыми можно делиться опытом и знаниями, а также получать доступ к различным ресурсам и инструментам для улучшения своих навыков.

1вин – это официальный сайт, который предлагает своим клиентам все, что они могут потребовать для успешной игры. Здесь вы можете найти все, что вам нужно, чтобы начать свою карьеру в мире азарта.

Официальный сайт 1вин – ключ к успешной ставке

Преимущества официального сайта 1вин

Официальный сайт 1вин предлагает множество преимуществ, которые делают его одним из лучших в индустрии. Среди них:

  • Большой выбор ставок – на официальном сайте 1вин можно сделать ставку на различные виды спорта, включая футбол, баскетбол, теннис и другие.
  • Высокие коэффициенты – 1вин предлагает высокие коэффициенты, что обеспечивает игрокам максимальную прибыль.
  • Многофункциональная система ставок – на официальном сайте 1вин можно сделать ставку на различные варианты, включая победу одной из команд, тотал, и другие.

Официальный сайт 1вин – это место, где можно найти все, что нужно для успешной ставки. Сайт регулярно обновляется, чтобы обеспечить игрокам максимальное удобство и комфорт при использовании.

1win – официальный сайт букмекерской конторы 1вин

1вин – это официальный сайт букмекерской конторы, которая предлагает своим клиентам широкий спектр услуг по ставкам на спорт, киберспорт и другие виды азартных игр. 1вин – это место, где можно найти все, что нужно для успешной игры и получения выигрыша.

1вин предлагает своим клиентам множество преимуществ, включая:

  • Большой выбор ставок на спорт и киберспорт
  • Высокие коэффициенты для ставок
  • Большой выбор азартных игр, включая рулетку, бинго и другие
  • Мобильное приложение для удобного доступа к услугам
  • 24/7 поддержка клиентов

1вин – это безопасное и надежное место для игроков, которые ищут сервисы для ставок на спорт и азартные игры. 1вин использует современные технологии для обеспечения безопасности и конфиденциальности своих клиентов.

1вин предлагает своим клиентам несколько способов пополнения счета, включая:

  • Банковские карты
  • Электронные платежные системы
  • Биткоин
  • 1вин – это официальный сайт букмекерской конторы, который предлагает своим клиентам широкий спектр услуг и преимуществ. 1вин – это место, где можно найти все, что нужно для успешной игры и получения выигрыша.

    Описание и функциональность официального сайта 1win

    Официальный сайт 1win – это платформа, которая предлагает пользователям широкий спектр услуг и функциональных возможностей для ставок на спорт, киберспорт и другие виды азартных игр. В этом разделе мы рассмотрим основные функции и преимущества официального сайта 1win.

    Функциональность сайта

    Официальный сайт 1win предлагает пользователям широкий спектр функциональных возможностей, включая:

    Ставки на спорт и киберспорт

    Игры на деньги, такие как покер, бинго и другие

    Казино с играми на деньги

    Торговля криптовалютами

    Мобильное приложение для игроков

    Кроме того, сайт 1win предлагает пользователям ряд дополнительных функций, включая:

    Возможность создавать несколько аккаунтов

    Возможность изменять пароль

    Возможность просмотра истории ставок

    Возможность просмотра истории депозитов

    Официальный сайт 1win также предлагает пользователям ряд преимуществ, включая:

    Высокие коэффициенты для ставок

    Высокие ставки для игроков

    Возможность получать бонусы и промокоды

    Возможность получать доступ к эксклюзивным играм и функциям

    В целом, официальный сайт 1win – это платформа, которая предлагает пользователям широкий спектр услуг и функциональных возможностей для ставок на спорт, киберспорт и другие виды азартных игр. Сайт доступен для использования в любое время и из любого места, где есть доступ к интернету.

    Польза и преимущества использования официального сайта 1win

    Пользование официальным сайтом 1win – это выбор комфортного и безопасного способа ставки на спорт и игры. В этом разделе мы рассмотрим преимущества использования официального сайта 1win и почему это лучший выбор для игроков.

    Безопасность и надежность

    Официальный сайт 1win обеспечивает безопасность и надежность своих пользователей. Он использует современные технологии для защиты данных и обеспечивает конфиденциальность транзакций. Это означает, что вы можете быть уверены в том, что ваша информация будет защищена и ваша ставка будет обработана быстро и безопасно.

    Преимущества использования официального сайта 1win

    Кроме того, официальный сайт 1win предлагает множество бонусов и акций, которые могут помочь вам начать играть или увеличить вашу ставку. Это означает, что вы можете получить дополнительные ресурсы для игры и увеличить свои шансы на выигрыш.

    Еще одним преимуществом использования официального сайта 1win является его доступность на различных языках, включая русский. Это означает, что вы можете играть на сайте, не зная английского языка, и наслаждаться всеми преимуществами, которые он предлагает.

    Конкурентоспособность

    Официальный сайт 1win является одним из лучших букмекеров в мире, и это означает, что он предлагает конкурентоспособные коэффициенты и условия для игроков. Это означает, что вы можете получать лучшие коэффициенты и условия, чем на других сайтах, и наслаждаться игрой на высоком уровне.

    В целом, использование официального сайта 1win – это выбор комфортного и безопасного способа ставки на спорт и игры. Он предлагает множество преимуществ, включая безопасность и надежность, доступность широкого спектра функций и услуг, бонусы и акции, и конкурентоспособность.

    Design and Develop by Ovatheme